home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Bavarian
/
Bavarian #058 (19xx)(APS Electronic).zip
/
Bavarian #058 (19xx)(APS Electronic).adf
/
bild1.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-08-03
|
10KB
|
409 lines
#include "exec/types.h"
#include "exec/memory.h"
#include "libraries/dos.h"
#include "intuition/intuition.h"
#include "graphics/view.h"
#include "graphics/rastport.h"
#include "lattice/stdio.h"
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct IntuiMessage *message;
struct RastPort *rp;
struct ViewPort *vp;
struct Screen *screen;
struct Window *w;
long wait;
int auf=2,allow=2,flag,i,x,y,code,kreuz,eig[11],summe[11],was[11];
float weiter[11];
char info[1],filename[6]="Test ";
char *a,buffer[80];
char *interesse[11];
ULONG DosBase,file;
BYTE laenge;
int p[53];
FILE *erg;
struct NewScreen ns =
{ 0,0,640,256,4,0,1,HIRES,CUSTOMSCREEN,NULL,"Was soll ich werden ?",NULL,NULL};
struct NewWindow nw =
{ 0,0,640,256,4,0,
MOUSEBUTTONS|MOUSEMOVE|CLOSEWINDOW,
REPORTMOUSE|WINDOWCLOSE|BORDERLESS|ACTIVATE,NULL,NULL,
" BERUFSWAHL V1.0 ",NULL,NULL,0,0,0,0,CUSTOMSCREEN };
void iff(name)
char name[];
{
struct BitMap *ptr;
BYTE *puffer[5];
UBYTE depth;
char text[5];
BYTE rot,gruen,blau;
register int i;
file = Open(name,MODE_OLDFILE);
Read(file,&text[0],4);
Read(file,&text[0],4);
Read(file,&depth,1);
Read(file,&depth,1);
ptr = rp->BitMap;
for(i = 0 ; i < 4 ; i++)
puffer[i] = ptr->Planes[i]+799;
Read(file,&text[0],6);
for(i=0 ; i < 32 ; i++)
{
Read(file,&rot,1);
Read(file,&gruen,1);
Read(file,&blau,1);
SetRGB4(&screen->ViewPort,i,rot/16,gruen/16,blau/16);
};
for(i=0 ; i < 4 ; i++)
Read(file,puffer[i],ns.Width/8*200);
Close(file);
SetAPen(rp,0);
RectFill(rp,630,0,640,10);
SetAPen(rp,5);
Move(rp,10,235);
Text(rp,"© 5.10.1988 by MEGABYTECREW",27);
Move(rp,10,245);
Text(rp,"Programmer: Pöll Markus Designer: Ahamer Martin",51);
}
event()
{
int class = 0;
if(message=(struct IntuiMessage *)GetMsg(w->UserPort))
{
class=message->Class;
code=message->Code;
ReplyMsg(message);
}
return(class);
}
void neueFrage()
{
SetAPen(rp,0);
Move(rp,0,90);
Text(rp," ",80);
SetAPen(rp,1);
Move(rp,0,90);
Read(file,&laenge,1);
Read(file,&buffer[0],laenge);
strncpy(info,&buffer[0],1);
Text(rp,&buffer[1],laenge-1);
kreuz=atoi(info);
}
void neueFragen()
{
int ii;
SetAPen(rp,0);
RectFill(rp,0,80,640,150);
SetAPen(rp,1);
for(ii=0;ii<5;ii++)
{
Move(rp,0,90+10*ii);
Read(file,&laenge,1);
Read(file,&buffer[0],laenge);
Text(rp,&buffer[0],laenge);
}
for(ii=0;ii<5;ii++)
{
Move(rp,320,90+10*ii);
Read(file,&laenge,1);
Read(file,&buffer[0],laenge);
Text(rp,&buffer[0],laenge);
}
}
void controlmouse()
{
int class;
flag=0;
while(flag==0)
{
class=event();
switch(class)
{
case MOUSEBUTTONS: allow=3-allow;
if(allow==1) flag=1;
break;
case CLOSEWINDOW: ende();
break;
};
}
x=(w->MouseX);
y=(w->MouseY);
}
void auswerten1()
{
controlmouse();
flag=0;
if((y>164) && (y<190))
{
if((x> 64) && (x<150)) { summe[kreuz]=summe[kreuz]+1; flag=1; };
if((x>168) && (x<254)) { summe[kreuz]=summe[kreuz]+2; flag=1; };
if((x>272) && (x<358)) { summe[kreuz]=summe[kreuz]+3; flag=1; };
if((x>376) && (x<462)) { summe[kreuz]=summe[kreuz]+4; flag=1; };
if((x>480) && (x<566)) { summe[kreuz]=summe[kreuz]+5; flag=1; };
}
if(flag==0) auswerten1();
}
void auswerten2()
{
controlmouse();
flag=0;
if((y>173) && (y<200))
{
if((x>155) && (x<239)) { p[i]=1; flag=1; };
if((x>401) && (x<485)) { p[i]=0; flag=1; };
}
if(flag==0) auswerten2();
}
void auswerten3()
{
controlmouse();
flag=0;
if((y>161) && (y<202))
{
if((x>159) && (x<234)) { p[i]=1; flag=1; };
if((x>406) && (x<481)) { p[i]=0; flag=1; };
}
if(flag==0) auswerten3();
}
void ordnen()
{
int copy;
float const;
interesse[0]="Naturwissenschaft ";
interesse[1]="Technik ";
interesse[2]="EDV ";
interesse[3]="Medizin ";
interesse[4]="Sozialarbeit ";
interesse[5]="Unterrricht ";
interesse[6]="Verwaltung ";
interesse[7]="Kaufmännische Tätigkeit";
interesse[8]="Optische Gestaltung ";
interesse[9]="Geisteswissenschaft ";
for(i=0;i<10;i++)
was[i]=i;
flag=0;
while(flag==0)
{
flag=1;
for(i=0;i<10;i++)
if(summe[i] < summe[i+1])
{
copy=summe[i];
summe[i]=summe[i+1];
summe[i+1]=copy;
eig[10]=eig[i];
eig[i]=eig[i+1];
eig[i+1]=eig[10];
interesse[10]=interesse[i];
interesse[i]=interesse[i+1];
interesse[i+1]=interesse[10];
was[10]=was[i];
was[i]=was[i+1];
was[i+1]=was[10];
flag=0;
};
}
const=(float)summe[0]/8;
for(i=0;i<10;i++)
weiter[i]=summe[i]+eig[i]*const;
flag=0;
while(flag==0)
{
flag=1;
for(i=0;i<10;i++)
if(weiter[i] < weiter[i+1])
{
was[10]=was[i];
was[i]=was[i+1];
was[i+1]=was[10];
const=weiter[i];
weiter[i]=weiter[i+1];
weiter[i+1]=const;
flag=0;
};
}
}
void Ergebnis12()
{
fprintf(erg," Berufsgebiet Interessenspunkte Eignungspunkte\n");
fprintf(erg," -----------------------------------------------------------------------\n");
for(i=0;i<10;i++)
fprintf(erg," %s %d %d \n",interesse[i],summe[i],eig[i]);
for(i=0;i<10;i++)
fprintf(erg,"%f ",weiter[i]);
fprintf(erg,"\n");
for(i=0;i<3;i++)
fprintf(erg,"%d ",was[i]);
fprintf(erg,"\n");
}
void Test1()
{
iff("Testbild1");
file = Open("Fragen1",MODE_OLDFILE);
auf=3-auf;
while(i<300)
{
neueFrage();
auswerten1();
i++;
}
Close(file);
auf=3-auf;
}
void Test2()
{
SetAPen(rp,0);
RectFill(rp,0,10,640,256);
iff("Testbild2");
file = Open("Fragen2",MODE_OLDFILE);
auf=3-auf;
i=1;
while(i<53)
{
neueFrage();
auswerten2();
i++;
}
Close(file);
auf=3-auf;
eig[0]=p[8]+p[10]+p[14]+p[17]+p[23]+p[28]+p[35]+p[42];
eig[1]=p[9]+p[10]+p[14]+p[17]+p[31]+p[36]+p[46]+p[51];
eig[2]=p[10]+p[12]+p[14]+p[24]+p[30]+p[31]+p[36]+p[47];
eig[3]=p[11]+p[16]+p[20]+p[22]+p[33]+p[39]+p[41]+p[43];
eig[4]=p[4]+p[7]+p[18]+p[20]+p[22]+p[34]+p[39]+p[43];
eig[5]=p[4]+p[5]+p[20]+p[25]+p[29]+p[40]+p[45]+p[52];
eig[6]=p[1]+p[2]+p[15]+p[27]+p[28]+p[41]+p[47]+p[49];
eig[7]=p[1]+p[6]+p[14]+p[17]+p[31]+p[38]+p[50]+p[52];
eig[8]=p[3]+p[13]+p[21]+p[26]+p[32]+p[37]+p[42]+p[46];
eig[9]=p[1]+p[12]+p[19]+p[25]+p[28]+p[42]+p[44]+p[48];
}
void Test3()
{
int elemente=24,s[10];
file = Open(filename,MODE_OLDFILE);
auf=3-auf;
if(filename[4]==(2+48)) elemente=15;
if(filename[4]==(6+48)) elemente=20;
if(filename[4]==(8+48)) elemente=18;
i=0;
while(i<elemente)
{
i++;
neueFragen();
auswerten3();
}
switch(filename[4]-48)
{
case 2: { s[1]=(p[1]==1)+(p[2]==1)+(p[4]==0)+(p[5]==0)+(p[7]==1)+(p[8]==1)+(p[10]==0)+(p[11]==0)+(p[13]==1)+(p[14]==1);
s[2]=(p[1]==0)+(p[3]==1)+(p[4]==1)+(p[6]==0)+(p[7]==0)+(p[9]==1)+(p[10]==1)+(p[12]==0)+(p[13]==0)+(p[15]==1);
s[3]=(p[2]==0)+(p[3]==0)+(p[5]==1)+(p[6]==1)+(p[8]==0)+(p[9]==0)+(p[11]==1)+(p[12]==1)+(p[14]==0)+(p[15]==0);
elemente=3;
break; }
case 6: { s[1]=(p[1]==1)+(p[3]==1)+(p[7]==1)+(p[8]==0)+(p[11]==0)+(p[13]==0)+(p[17]==0)+(p[18]==1);
s[2]=(p[1]==0)+(p[4]==1)+(p[9]==1)+(p[10]==0)+(p[11]==1)+(p[14]==0)+(p[19]==0)+(p[20]==1);
s[3]=(p[2]==1)+(p[4]==0)+(p[6]==1)+(p[7]==0)+(p[12]==0)+(p[14]==1)+(p[16]==0)+(p[17]==1);
s[4]=(p[2]==0)+(p[5]==1)+(p[8]==1)+(p[9]==0)+(p[12]==1)+(p[15]==0)+(p[18]==0)+(p[19]==1);
s[5]=(p[3]==0)+(p[5]==0)+(p[6]==0)+(p[10]==1)+(p[13]==1)+(p[15]==1)+(p[16]==1)+(p[20]==0);
elemente=5;
break; }
case 8: { s[1]=(p[1]==1)+(p[2]==1)+(p[4]==0)+(p[5]==0)+(p[7]==1)+(p[8]==1)+(p[10]==0)+(p[11]==0)+(p[13]==1)+(p[14]==1)+(p[16]==0)+(p[17]==0);
s[2]=(p[1]==0)+(p[3]==1)+(p[4]==1)+(p[6]==0)+(p[7]==0)+(p[9]==1)+(p[10]==1)+(p[12]==0)+(p[13]==0)+(p[15]==1)+(p[16]==1)+(p[18]==0);
s[3]=(p[2]==0)+(p[3]==0)+(p[5]==1)+(p[6]==1)+(p[8]==0)+(p[9]==0)+(p[11]==1)+(p[12]==1)+(p[14]==0)+(p[15]==0)+(p[17]==1)+(p[18]==1);
elemente=3;
break; }
default: { s[1]=(p[1]==1)+(p[3]==1)+(p[5]==1)+(p[7]==0)+(p[9]==0)+(p[11]==0)+(p[13]==1)+(p[15]==1)+(p[17]==1)+(p[19]==0)+(p[21]==0)+(p[23]==0);
s[2]=(p[1]==0)+(p[4]==0)+(p[6]==1)+(p[7]==1)+(p[10]==1)+(p[12]==0)+(p[13]==0)+(p[16]==0)+(p[18]==1)+(p[19]==1)+(p[22]==1)+(p[24]==0);
s[3]=(p[2]==1)+(p[3]==0)+(p[4]==1)+(p[8]==0)+(p[9]==1)+(p[10]==0)+(p[14]==1)+(p[15]==0)+(p[16]==1)+(p[20]==0)+(p[21]==1)+(p[22]==0);
s[4]=(p[2]==0)+(p[5]==0)+(p[6]==0)+(p[8]==1)+(p[11]==1)+(p[12]==1)+(p[14]==0)+(p[17]==0)+(p[18]==0)+(p[20]==1)+(p[23]==1)+(p[24]==1);
elemente=4;
break;
}
}
kreuz++;
for(i=1;i<elemente+1;i++)
{
Read(file,&laenge,1);
Read(file,&buffer[0],laenge);
fprintf(erg,"%s: %d Punkte\n",buffer,s[i]);
}
Close(file);
auf=3-auf;
}
void main()
{
if((GfxBase = (struct GfxBase *)
OpenLibrary("graphics.library",0)) == 0) exit();
if((IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library",0)) == 0) exit();
if ((screen = (struct Screen*) OpenScreen(&ns)) == NULL)
{
printf("Hilfe, kein Screen !!!!!\n");
exit();
}
nw.Screen = screen;
w = (struct Window *) OpenWindow(&nw);
DosBase = OpenLibrary("dos.library",0);
rp = w -> RPort;
vp = &screen->ViewPort;
erg=fopen("Ergebnis","w");
Test1();
Test2();
ordnen();
Ergebnis12();
SetAPen(rp,0);
RectFill(rp,0,10,640,256);
kreuz=0;
iff("Testbild3");
filename[4]=was[0]+48;
Test3();
filename[4]=was[1]+48;
Test3();
filename[4]=was[2]+48;
Test3();
ende();
}
ende()
{
if(auf==1) Close(file);
fclose(erg);
CloseWindow(w);
CloseScreen(screen);
CloseLibrary(DosBase);
CloseLibrary(GfxBase);
CloseLibrary(IntuitionBase);
exit();
}